package com.woniuxy.amusementparkos.dao.wyh;

import java.math.BigDecimal;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.woniuxy.amusementparkos.entity.lsy.WriststarpInfoCondition;
import com.woniuxy.amusementparkos.entity.wyh.Balance_Change;
import com.woniuxy.amusementparkos.entity.wyh.WristStrap_Info;

@Mapper
public interface WristStrap_InfoDao {
	
	//根据腕带信息id查询腕带信息
	WristStrap_Info getByInfoId(int info_id);
	
	
	//根据腕带id查询腕带信息，集合，包括所有状态的信息。
	List<WristStrap_Info> getByWristStrapId(String wriststrp_id);
	
	//查询所有腕带信息
		WristStrap_Info getAllWristStrapInfo();
	
	//新增腕带信息
		void insert(WristStrap_Info wristStrap_Info);
		
	//返回最后插入的主键值，info_id
		int getCurrentInfoId();
		
	//根据info_id修改余额
		void  updateBalance(@Param("info_id") int info_id,@Param("balance") BigDecimal newbalance);

	//根据腕带编号wriststrp_id 查询该正在使用状态的信息；
		WristStrap_Info queryByWristStrap_Id(String wriststrp_id);
	
	//根据条件查询WristStrap_Info  (三个可选条件，动态sql,腕带编号，tel  和腕带状态)
		List<WristStrap_Info> selectByCondition(@Param("wristStrap_Info") WristStrap_Info wristStrap_Info,@Param("pageindex") int pageindex,@Param("size") int size);
	
	//查询条件查询的总数量；
		long selectCountByCondition(@Param("wristStrap_Info") WristStrap_Info wristStrap_Info);
		
		
	//根据腕带编号，查询该正在使用状态的腕带信息；
	WristStrap_Info getWorkStateWristStrap(String wriststrp_id);
	
	//根据条件更新腕带信息 更新(腕带状态，腕带余额，腕带结算时间；)
	void updateWindupMessage(WristStrap_Info wristStrap_Info);

	//强制结算，对所有腕带都进行更新（腕带状态，腕带结算时间；）
	int updateAllWindupMessage(WristStrap_Info wristStrap_info);

	//更改腕带编号，腕带更换业务；根据旧腕带号查找当前正在使用状态的旧腕带号，然后替换为新腕带号
	void repalceWristStrap(@Param("oldwriststrapid") String oldwriststrapid ,@Param("newwriststrapid") String newwriststrapid);

	//腕带挂失、解锁（根据腕带信息编号，查找腕带状态查找   更新为新状态）
	void lossAndUnlock(@Param("wriststrp_id")String wriststrp_id,@Param("oldinfo_state") int oldinfo_state,@Param("newinfo_state") int newinfo_state);


	// 更新单条腕带信息 lishiyuan添加
	Integer updateWristStrapInfo(WristStrap_Info wristStrapInfo);
	
	
	// 软删除腕带租赁信息
	Integer deleteWristStrapInfo(Integer info_id);

	// 组合筛选查询
	List<WristStrap_Info> listAllByConditions(@Param("con")WriststarpInfoCondition condition,
			@Param("start")Integer start,@Param("size")Integer limit);
	
	// 组合筛选技术
	Long countAllByConditions(@Param("con")WriststarpInfoCondition condition);
}
